350. 两个数组的交集 II

350. 两个数组的交集 II

题目链接

分析

这个题跟 349. 两个数组的交集 几乎如出一辙,思路上也没什么差别,具体思路看 349 题即可。
需要修改的地方:

解题

public int[] intersect(int[] nums1, int[] nums2) {
  int shortLength = nums1.length > nums2.length ? nums2.length : nums1.length;
  int[] result = new int[shortLength];
  int resultIndex = 0;
  int[] number1Count = new int[1001];
  for (int i = 0; i < nums1.length; i++) {
    int index = nums1[i];
    number1Count[index]++;
  }
  int[] number2Count = new int[1001];
  for (int i = 0; i < nums2.length; i++) {
    int index = nums2[i];
    number2Count[index]++;
  }
  for (int i = 0; i < 1001; i++) {
    if (number1Count[i] > 0 && number2Count[i] > 0) {
      int miniLength = number1Count[i] > number2Count[i] ? number2Count[i] : number1Count[i];
      for (int j = 0; j < miniLength; j++) {
        result[resultIndex] = i;
        resultIndex++;
      }
    }
  }
  int[] finalResult = new int[resultIndex];
  for (int i = 0; i < resultIndex; i++) {
    finalResult[i] = result[i];
  }
  return finalResult;
}

相关题

349. 两个数组的交集